///*
// *   Copyright © 2011-2015 Kinghood Group All Rights Reserved.
// *   未经本公司正式书面同意，其他任何个人、团体不得使用、复制、修改或发布本软件.
// *   版权所有深圳金雅福控股集团有限公司 www.jinyafu.com.
// */
//
//package com.zhang.authoritycenter.common.aop;
//
//import com.alibaba.fastjson.JSON;
//import com.zhang.authoritycenter.security.UserUtil;
//import com.zhang.infrastructure.model.KingHoodResponseVO;
//import lombok.extern.slf4j.Slf4j;
//import org.aspectj.lang.JoinPoint;
//import org.aspectj.lang.annotation.*;
//import org.springframework.stereotype.Component;
//import org.springframework.web.context.request.RequestAttributes;
//import org.springframework.web.context.request.RequestContextHolder;
//import org.springframework.web.context.request.ServletRequestAttributes;
//import org.springframework.web.multipart.MultipartFile;
//
//import javax.servlet.http.HttpServletRequest;
//import java.util.Objects;
//
///**
// * 系统日志
// *
// * @author zfj
// * @date 2023/12/15
// */
//@Aspect
//@Component
//@Slf4j
//public class OperatorLogAspect {
//
//
//    @Pointcut(value = "@annotation(com.zhang.authoritycenter.common.aop.OperatorLog)")
//    private void joinPointCut() {
//
//    }
//
//    @Before("joinPointCut() && @annotation(operatorLog)")
//    public void doBefore(JoinPoint joinPoint, OperatorLog operatorLog) throws Exception {
//        RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
//        if(Objects.isNull(requestAttributes)){
//            log.info("当前绑定到线程的RequestAttributes，如果没有绑定，则为null");
//            return ;
//        }
//        HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
//        String requestURI = request.getRequestURI();
//        log.info("请求的url：{}",requestURI);
//        //记录请求入参
//        if (joinPoint != null && joinPoint.getArgs() != null && joinPoint.getArgs().length > 0) {
//            Object requestParam = joinPoint.getArgs()[0];
//            if (requestParam instanceof MultipartFile) {
//                log.info("上传的是文件");
//                return;
//            }
//            if (requestParam != null) {
//                String json = JSON.toJSONString(requestParam);
//                log.info("当前请求数据，封装json格式:{}", json);
//                //超过这个的数据就不存, 数据太大了， text 最多也就64kb
//                if (json.length() > 1024 * 10) {
//                    //这里部分数据可能会存在编码错误
//                    json = json.substring(0, 1024 * 10);
//                }
//                log.info("请求的参数：{}",json);
//            }
//        }
//
//    }
//
//    @AfterReturning(returning = "res", pointcut = "joinPointCut()")
//    public void doAfterReturning(JoinPoint joinPoint, Object res) {
//        if (res instanceof KingHoodResponseVO) {
//            KingHoodResponseVO result = (KingHoodResponseVO) res;
//            log.info("OperatorLogAspect==>返回：{}", result);
//        } else {
//            log.info("OperatorLogAspect==>返回不是KingHoodResponseVO");
//        }
//    }
//
//    @AfterThrowing(throwing = "e", pointcut = "joinPointCut()")
//    public void doAfterThrowing(JoinPoint joinPoint, Throwable e) {
//
//        log.error("OperatorLogAspect==>返回异常：", e);
//        String message = e.getMessage().length() > 1000 ? e.getMessage().substring(1000) : e.getMessage();
//
//    }
//}